/*
 * @Date: 2023-02-16 10:50:12
 * @LastEditTime: 2023-04-05 14:06:09
 * @FilePath: /nlk/src/api/page/home.ts
 * 介绍:首页数据
 */
import { defaHttp, ApiRes } from "../index";

/**获取主页数据 */
export async function apiHomeData(): Promise<void | HomeData.Res> {
  const res = await defaHttp.post<ApiRes<HomeData.Res>>("/index", undefined);
  if (res.code !== 200) return;
  return res.data;
}
/**获取主页数据 */
export namespace HomeData {
  export interface Res {
    /**
     * 累计收益，示例：0
     */
    accumulated_income: number;
    /**
     * 持仓金额，示例：0
     */
    amount_held: number;
    /**
     * 币种显示，示例：-
     */
    coins: Coins;
    /**
     * 保本产品信息，示例：-
     */
    store: Store;
    /**
     * 总资产，示例：0
     */
    total: number;
    /**
     * 可用余额，示例：0
     */
    usdt: number;
    /**上次空投领取时间 */
    last_time: string;
  }

  /**
   * 币种显示，示例：-
   */
  export interface Coins {
    [key: StrNumber]: CoinsItem;
  }

  /**
   * 示例：-
   */
  export interface CoinsItem {
    /**
     * 涨跌幅，示例：4.12
     */
    change: string;
    /**
     * 币种名称，示例：FIL
     */
    code: string;
    /**
     * 币种ID，示例：6
     */
    id: number;
    /**
     *
     * logo，示例：http://solrimage.oss-ap-southeast-1.aliyuncs.com/images/6e56be27-4780-4dc7-ac1c-ec7f88940697.png
     */
    logo: string;
    /**
     * 币种价格，示例：5.9450
     */
    price: string;
  }

  /**
   * 保本产品信息，示例：-
   */
  export interface Store {
    [key: StrNumber]: StoreItem;
  }

  /**
   * 示例：-
   */
  export interface StoreItem extends BaseCoin {
    /**币种价格 */
    price: string;
    store: GoodsOption[];
  }
  export interface GoodsOption {
    /**这个ID用来传到后台的 */
    id: StrNumber;
    /**天数 */
    day: number;
    coin_id: StrNumber;
    /**名称 */
    name: string;
    /**倍率；显示需要乘以100 */
    multiple: StrNumber;
    /**最低 */
    min: StrNumber;
    /**最高 */
    max: StrNumber;
    /**1开放申购；0：已满，无法申购 */
    status: number;
    /**1：是随存随取；0：不是随存随取 */
    is_anytime: number;
  }
}

/**可用申购的产品 */
export async function apiStoreList(): Promise<void | StoreList.Res> {
  const res = await defaHttp.post<ApiRes<StoreList.Res>>(
    "/store/list",
    undefined
  );
  if (res.code !== 200) return;
  return res.data;
}
/**可用申购的产品 */
export namespace StoreList {
  export interface Res {
    /**
     * 保本产品信息，示例：-
     */
    storage: Store;
    /**购买产品收币地址 */
    address: string;
  }
  /**
   * 保本产品信息，示例：-
   */
  export interface Store {
    [key: StrNumber]: StoreItem;
  }
  /**
   * 示例：-
   */
  export interface StoreItem extends BaseCoin {
    /**币种价格 */
    price: string;
    store: GoodsOption[];
  }
  export interface GoodsOption {
    /**这个ID用来传到后台的 */
    id: StrNumber;
    /**天数 */
    day: number;
    coin_id: StrNumber;
    /**名称 */
    name: string;
    /**倍率；显示需要乘以100 */
    multiple: StrNumber;
    /**最低 */
    min: StrNumber;
    /**最高 */
    max: StrNumber;
    /**1开放申购；0：已满，无法申购 */
    status: number;
    /**1：是随存随取；0：不是随存随取 */
    is_anytime: number;
  }
}

/**余额申购理财产品 */
export async function apiApplyBuyGameBalance(
  data: ApplyBuyGameBalance.Req
): Promise<void | boolean> {
  const res = await defaHttp.post<ApiRes<ApplyBuyGameBalance.Res>>(
    "/storage/save/internal",
    data,
    { mode: ["showError", "showLoading", "showSucceed"] }
  );
  if (res.code !== 200) return;
  return true;
}
/**余额申购理财产品 */
export namespace ApplyBuyGameBalance {
  export type Res = void;
  export interface Req {
    store_id: StrNumber;
    number: number;
  }
}

/**领取空投 */
export async function apiAirdrop(): Promise<void | boolean> {
  const res = await defaHttp.post<ApiRes<Airdrop.Res>>(
    "/receive/airdrop",
    undefined,
    { mode: ["showError", "showSucceed"] }
  );
  if (res.code !== 200) return;
  return true;
}
/**领取空投 */
export namespace Airdrop {
  export type Res = void;
}
